package com.itguigu.advice;

import org.aspectj.lang.annotation.*;
import org.springframework.stereotype.Component;


// @Aspect表示这个类是一个切面类

// @Component注解保证这个切面类能够放入IOC容器
//@Aspect
//@Component
public class LogAspect {

    // @Before注解：声明当前方法是前置通知方法
    // value属性：指定切入点表达式，由切入点表达式控制当前通知方法要作用在哪一个目标方法上
    @Before("execution(* com..impl.*.*(..))")
    public void before() {
        System.out.println("[日志] 前置通知");
    }

    @AfterReturning("execution(* com..impl.*.*(..))")
    public void afterReturning(Object result) {
        System.out.println("[日志] 后置通知");
    }

    @AfterThrowing("execution(* com..impl.*.*(..))")
    public void afterThrowing() {
        System.out.println("[日志] 异常通知");
    }

    @After("execution(* com..impl.*.*(..))")
    public void after() {
        System.out.println("[日志] 最终通知");
    }

}
